/*
break key
分别使用按键3和按键4产生中断，从而控制LED0和LED1的亮灭。
*/

#include "reg52.h"

typedef unsigned char u8;//对系统默认数据类型进行重定义
typedef unsigned int u16;

//中断0所需的LED和独立按键定义
sbit LED=P2^0;
sbit KEY=P3^2;

//中断1所需的LED和独立按键定义，注意外部中断1中断号为2。。。。
sbit KEY4=P3^3;
sbit LED2=P2^1;

//外部中断0配置函数
void exti0_init(void)
{
	EA=1;//打开总中断
	EX0=1;//打开INT0的中断允许
	IT0=1;//跳变沿触发方式（下降沿）
}
//外部中断1配置函数
void exti1_init(void)
{
	EA=1;//打开总中断
	EX1=1;//打开INT1的中断允许
	IT1=1;//跳变沿触发方式（下降沿）
}

//延时函数
void delay_10us(u16 time)
{
	while(time--);
}

void main()
{
	exti0_init();//外部中断0配置
	exti1_init();//外部中断1配置
	while(1)
	{
	}
}
void exti0() interrupt 0//外部中断0中断函数
{
	delay_10us(500);//消抖
	if(KEY==0)//再次判断按键3是否按下
		LED=!LED;//LED状态反转
}
void exti1() interrupt 2//外部中断1中断函数
{
	delay_10us(500);//消抖
	if(KEY4==0)//再次判断按键4是否按下
		LED2=!LED2;//LED2状态反转
}